Solidity ব্যবহার করে একটি Basic Smart Contract তৈরি করা অনেক সহজ এবং Ethereum ব্লকচেইনের জন্য এটি আদর্শ প্রোগ্রামিং ভাষা। Solidity দিয়ে আপনি স্মার্ট কন্ট্রাক্ট তৈরি করতে পারবেন, যা Ethereum ব্লকচেইনে ডেপ্লয় করা যাবে। নিচে একটি Basic Smart Contract এর উদাহরণ দেয়া হলো, যা একটি সাধারণ স্টোরেজ কন্ট্রাক্ট হিসেবে কাজ করবে। এই কন্ট্রাক্টের মাধ্যমে আপনি একটি ভ্যালু স্টোর করতে এবং রিট্রিভ করতে পারবেন।
// Solidity ভার্সন নির্ধারণ করা
pragma solidity ^0.8.0;
// কন্ট্রাক্টের নাম SimpleStorage
contract SimpleStorage {
// একটি private state variable সংরক্ষণ করা, যা শুধুমাত্র কন্ট্রাক্টের মাধ্যমে অ্যাক্সেস করা যাবে
uint private storedData;
// একটি function যা ভ্যালু স্টোর করবে
function set(uint x) public {
storedData = x;
}
// একটি function যা স্টোর করা ভ্যালু রিটার্ন করবে
function get() public view returns (uint) {
return storedData;
}
}
Solidity ভার্সন নির্ধারণ:
pragma solidity ^0.8.0;
এই লাইনটি Solidity কম্পাইলারকে বলে যে, এই কন্ট্রাক্টটি Solidity-এর 0.8.0 বা তার পরবর্তী ভার্সনে কম্পাইল করতে হবে। এটি একটি ভালো প্র্যাকটিস যাতে সুনির্দিষ্ট ভার্সনে কন্ট্রাক্টটি কাজ করতে পারে এবং ভার্সন-স্পেসিফিক বাগ এড়ানো যায়।
কন্ট্রাক্ট ডিক্লেয়ারেশন:
contract SimpleStorage {
এখানে, SimpleStorage
নামে একটি স্মার্ট কন্ট্রাক্ট তৈরি করা হয়েছে। কন্ট্রাক্টের মধ্যে আমরা ভ্যারিয়েবল এবং ফাংশনগুলো সংজ্ঞায়িত করবো।
স্টেট ভ্যারিয়েবল:
storedData
হলো একটি uint
টাইপের প্রাইভেট স্টেট ভ্যারিয়েবল, যা কন্ট্রাক্টে একটি সংখ্যা সংরক্ষণ করবে। প্রাইভেট হওয়ার কারণে, এটি কেবলমাত্র এই কন্ট্রাক্টের মাধ্যমে অ্যাক্সেস করা যাবে এবং বাইরের কোনো অ্যাকাউন্ট বা কন্ট্রাক্ট এটি সরাসরি অ্যাক্সেস করতে পারবে না।
set
ফাংশন:
function set(uint x) public {
storedData = x;
}
set
ফাংশনটি পাবলিক এবং এটি একটি uint
মান ইনপুট হিসেবে নেয়। এই ফাংশনটি ব্যবহার করে storedData
ভ্যারিয়েবলে একটি নতুন মান সেট করা যায়।
get
ফাংশন:
function get() public view returns (uint) {
return storedData;
}
get
ফাংশনটি পাবলিক এবং এটি একটি view
ফাংশন, যার মানে হলো এটি শুধুমাত্র ডেটা রিড করে, পরিবর্তন করে না। এটি storedData
ভ্যারিয়েবলে সংরক্ষিত মান রিটার্ন করে।
এই কন্ট্রাক্টটি Solidity কম্পাইলার ব্যবহার করে কম্পাইল করা যায় এবং তারপর Ethereum Virtual Machine (EVM)-এ ডেপ্লয় করা যায়। নিচে কন্ট্রাক্ট ডেপ্লয় এবং ব্যবহার করার ধাপগুলো দেয়া হলো:
Deploy
বাটন ক্লিক করে কন্ট্রাক্টটি ডেপ্লয় করুন। আপনি Ethereum-এর টেস্টনেট (যেমন Ropsten, Kovan) বা স্থানীয় নেটওয়ার্ক ব্যবহার করতে পারেন।set
এবং get
ফাংশনগুলো ব্যবহার করে কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে পারেন।set
ফাংশনের মাধ্যমে একটি মান ইনপুট দিন এবং get
ফাংশন ব্যবহার করে সেই মানটি রিড করুন।view
বা pure
ফাংশনগুলো শুধুমাত্র ডেটা রিড বা ক্যালকুলেশন করে এবং গ্যাস খরচ হয় না। তবে set
বা অন্যান্য স্টেট-মডিফাইং ফাংশনগুলোতে গ্যাস ফি প্রয়োজন হয়।আপনি কন্ট্রাক্টটিতে আরও ফাংশন যুক্ত করতে পারেন, যেমন:
event
যোগ করা, যা কন্ট্রাক্টের পরিবর্তন সম্পর্কে ব্যবহারকারীদের অবহিত করতে সাহায্য করে।// মালিক সংরক্ষণের জন্য স্টেট ভ্যারিয়েবল
address public owner;
// কন্ট্রাক্ট ডিপ্লয় করার সময় মালিক সেট করা হচ্ছে
constructor() {
owner = msg.sender;
}
// শুধুমাত্র মালিক স্টোরেজ আপডেট করতে পারবে
function set(uint x) public {
require(msg.sender == owner, "Only the owner can set the value");
storedData = x;
}
Solidity ব্যবহার করে একটি Basic Smart Contract তৈরি করা সহজ এবং এটি Ethereum ব্লকচেইনে স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের জন্য প্রথম ধাপ। এই Basic Smart Contract-এর মাধ্যমে আপনি Solidity-এর মৌলিক ধারণাগুলো শিখতে পারবেন এবং ভবিষ্যতে আরও জটিল এবং উদ্ভাবনী কন্ট্রাক্ট তৈরি করতে সক্ষম হবেন।